KnockoutJS এর Observable Arrays

Web Development - নকআউটজেএস (KnockoutJS)
277

KnockoutJS একটি জনপ্রিয় JavaScript লাইব্রেরি যা MVVM (Model-View-ViewModel) ডিজাইন প্যাটার্ন অনুসরণ করে এবং এর মাধ্যমে data-binding এবং dependency tracking সহজেই ইমপ্লিমেন্ট করা যায়। Observable Arrays KnockoutJS এর একটি শক্তিশালী ফিচার, যা আপনাকে arrays এর ডেটাকে reactive (যে ডেটা পরিবর্তন হলে UI আপডেট হয়) হিসেবে পরিচালনা করতে সহায়তা করে।

এই গাইডে KnockoutJS Observable Arrays এর ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হবে এবং কিভাবে এটি কাজ করে তা উদাহরণ সহ দেখানো হবে।


1. KnockoutJS তে Observable Arrays:

Observable Arrays হল এমন একটি array যেটি observable হিসেবে কাজ করে, অর্থাৎ যখন array এর কোনো আইটেম পরিবর্তিত হয়, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়। এটি সাধারণভাবে ডেটাবেস বা ডেটার লিস্ট ম্যানেজমেন্টের জন্য ব্যবহার করা হয়।

KnockoutJS তে observableArray এর মাধ্যমে আপনি একটি array তৈরি করতে পারেন এবং যখনই ওই array তে কোনো পরিবর্তন হয় (যেমন আইটেম যোগ করা, মুছে ফেলা, অথবা আপডেট করা), তখন KnockoutJS ডাটাকে ট্র্যাক করে এবং UI তে তা রেন্ডার করে।

Observable Arrays তৈরি করা:

// Observable Array তৈরি করা
var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

// Observable Array এর মান দেখানো
console.log(fruits());

এখানে:

  • ko.observableArray([]) ব্যবহার করে একটি observable array তৈরি করা হয়েছে।
  • fruits() কল করলে এই observable array এর বর্তমান মান (যে মান সেট করা আছে) রিটার্ন হবে।

2. Observable Arrays এর সাথে কাজ করা:

KnockoutJS এর observableArray আপনাকে বিভিন্ন পদ্ধতিতে array এর উপাদান ম্যানেজ করতে সহায়তা করে, যেমন আইটেম যোগ করা, মুছে ফেলা, বা পরিবর্তন করা।

a. Observable Arrays এ আইটেম যোগ করা:

// Observable Array তে নতুন আইটেম যোগ করা
fruits.push("Grapes");  // "Grapes" যোগ হবে

এখানে:

  • push() মেথড ব্যবহার করে নতুন আইটেম যোগ করা হয়েছে।
  • KnockoutJS এটি ট্র্যাক করবে এবং UI আপডেট করবে।

b. Observable Arrays থেকে আইটেম মুছে ফেলা:

// Observable Array থেকে একটি আইটেম মুছে ফেলা
fruits.remove("Banana");  // "Banana" আইটেমটি মুছে যাবে

এখানে:

  • remove() মেথড ব্যবহার করে একটি আইটেম মুছে ফেলা হয়েছে।
  • KnockoutJS এটি ট্র্যাক করবে এবং UI আপডেট করবে।

c. Observable Arrays এ আইটেম পরিবর্তন করা:

// Observable Array এর প্রথম আইটেম পরিবর্তন করা
fruits()[0] = "Pineapple";  // প্রথম আইটেমটি পরিবর্তন হবে

এখানে:

  • fruits()[0] ব্যবহার করে আপনি observable array এর প্রথম আইটেমটি পরিবর্তন করতে পারেন।

d. Observable Arrays এর সব আইটেম লুপ করা (foreach):

KnockoutJS এ foreach টেমপ্লেট বাইনডিং ব্যবহার করে আপনি observableArray এর সব আইটেমকে লুপ করতে পারেন।

<ul data-bind="foreach: fruits">
    <li data-bind="text: $data"></li>
</ul>
// Knockout ViewModel
var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

ko.applyBindings({ fruits: fruits });

এখানে:

  • foreach বাইনডিং ব্যবহার করা হয়েছে যা fruits array এর প্রতিটি আইটেমকে লিস্ট আইটেম হিসেবে রেন্ডার করবে।

3. KnockoutJS Observable Arrays এর Advanced ফিচার:

a. Observable Arrays এবং Computed Observables:

আপনি computed observables ব্যবহার করে observable arrays এর উপর ভিত্তি করে কোনো নতুন মান ক্যালকুলেট করতে পারেন।

var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);
var fruitsCount = ko.computed(function() {
    return fruits().length;
});

console.log(fruitsCount());  // ফলস্বরূপ, 3

এখানে:

  • fruitsCount একটি computed observable যা fruits array এর দৈর্ঘ্য রিটার্ন করে। যখনই fruits পরিবর্তিত হবে, তখন fruitsCount স্বয়ংক্রিয়ভাবে আপডেট হবে।

b. Sorting and Filtering Observable Arrays:

আপনি observable arrays এর মধ্যে sort বা filter পদ্ধতিও ব্যবহার করতে পারেন।

Sorting Example:
var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

fruits.sort();  // Fruits array alphabetically sort হবে
Filtering Example:
var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

var filteredFruits = ko.computed(function() {
    return ko.utils.arrayFilter(fruits(), function(fruit) {
        return fruit.startsWith("A");  // যেসব ফলের নাম "A" দিয়ে শুরু হয়
    });
});

console.log(filteredFruits());  // ["Apple"]

এখানে:

  • arrayFilter ব্যবহার করে আপনি observable array এর মধ্যে একটি নির্দিষ্ট কন্ডিশনের উপর ভিত্তি করে ফিল্টার করতে পারেন।

4. Dynamic Observable Arrays with UI Interaction:

KnockoutJS এর observable arrays ব্যবহার করে আপনি একটি ডাইনামিক UI তৈরি করতে পারেন, যেখানে ইউজারের ইনপুট অনুযায়ী ডেটা পরিবর্তন হবে এবং UI তাও আপডেট হবে।

উদাহরণ:

<div>
    <input type="text" data-bind="value: newFruit" placeholder="Add a fruit" />
    <button data-bind="click: addFruit">Add Fruit</button>

    <ul data-bind="foreach: fruits">
        <li data-bind="text: $data"></li>
    </ul>
</div>
function AppViewModel() {
    this.fruits = ko.observableArray(["Apple", "Banana", "Orange"]);
    this.newFruit = ko.observable("");

    this.addFruit = () => {
        if (this.newFruit()) {
            this.fruits.push(this.newFruit());
            this.newFruit("");  // Clear the input field
        }
    };
}

ko.applyBindings(new AppViewModel());

এখানে:

  • ইউজার একটি নতুন ফলের নাম ইনপুট ফিল্ডে লিখতে পারে এবং Add Fruit বাটনে ক্লিক করলে সেই ফলটি fruits array তে যোগ হবে। fruits একটি observable array, তাই UI তাও স্বয়ংক্রিয়ভাবে আপডেট হবে।

KnockoutJS এর Observable Arrays খুবই শক্তিশালী একটি বৈশিষ্ট্য যা আপনাকে ডেটা-ড্রিভেন UI তৈরি করতে সাহায্য করে। এর মাধ্যমে আপনি dynamic data এবং UI updates সহজেই ম্যানেজ করতে পারেন। Lazy loading, computed observables, sorting, filtering, এবং dynamic interaction সহ বিভিন্ন ফিচার যোগ করে আপনি আপনার অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারীর জন্য সাশ্রয়ী করতে পারেন। KnockoutJS observable arrays তে ডেটা পরিবর্তন হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়, যা অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী বান্ধব করে তোলে।

Content added By

Observable Array কী এবং এর ব্যবহার

206

KnockoutJS একটি শক্তিশালী JavaScript লাইব্রেরি যা Model-View-ViewModel (MVVM) ডিজাইন প্যাটার্ন অনুসরণ করে এবং এটি ডেটা-বাইন্ডিং এবং ডিপেনডেন্সি ট্র্যাকিংয়ের মাধ্যমে ইউজার ইন্টারফেস পরিচালনা করে। Observable Array একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা KnockoutJS তে ব্যবহার করা হয়, এবং এটি ডেটা ম্যানেজমেন্ট এবং UI এর মধ্যে ইন্টারঅ্যাকশনকে আরও সহজ এবং ডাইনামিক করে তোলে।

Observable Array কী?

Observable Array হল একটি বিশেষ ধরনের observable যা অ্যারে ডেটা হ্যান্ডল করতে সক্ষম। এটি KnockoutJS এর সাধারণ observable এর মতো কাজ করে, তবে এটি অ্যারে ডেটা ট্র্যাক করার জন্য আরও কিছু অতিরিক্ত ফিচার প্রদান করে। Observable Array এর মাধ্যমে আপনি সহজেই অ্যারে উপাদানগুলিতে পরিবর্তন ট্র্যাক করতে পারেন এবং সেই পরিবর্তনগুলি UI তে প্রতিফলিত হয়।

KnockoutJS তে observableArray ব্যবহার করে আপনি অ্যারে মধ্যে যে কোনো পরিবর্তন (যেমন, যোগ, মুছা, পরিবর্তন ইত্যাদি) স্বয়ংক্রিয়ভাবে UI তে দেখতে পাবেন।


Observable Array এর ব্যবহার:

KnockoutJS তে observableArray তৈরি করতে ko.observableArray() মেথড ব্যবহার করা হয়।

১. Observable Array তৈরি করা:

// Observable Array তৈরি করা
var fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

এখানে, ko.observableArray() একটি নতুন observable array তৈরি করছে, যা প্রথমে "Apple", "Banana", এবং "Orange" মান ধারণ করে।

২. Observable Array থেকে ডেটা রিট্রিভ করা:

আপনি সহজেই observable array থেকে ডেটা রিট্রিভ করতে পারেন:

console.log(fruits());  // Output: ["Apple", "Banana", "Orange"]

এখানে, fruits() এর মাধ্যমে অ্যারে ডেটা অ্যাক্সেস করা হচ্ছে। fruits() কে কল করলে আপনি Observable Array এর বর্তমান ডেটা পাবেন।

৩. Observable Array তে ডেটা যোগ করা:

KnockoutJS তে observableArray.push() ব্যবহার করে নতুন উপাদান অ্যারে তে যোগ করা যায়।

fruits.push("Grapes");
console.log(fruits());  // Output: ["Apple", "Banana", "Orange", "Grapes"]

এখানে, push() মেথড ব্যবহার করে "Grapes" উপাদানটি অ্যারে তে যোগ করা হয়েছে।

৪. Observable Array থেকে ডেটা মুছা:

KnockoutJS তে observableArray.remove() মেথড ব্যবহার করে অ্যারে থেকে কোনো আইটেম মুছে ফেলা যেতে পারে।

fruits.remove("Banana");
console.log(fruits());  // Output: ["Apple", "Orange", "Grapes"]

এখানে, remove() মেথডের মাধ্যমে "Banana" উপাদানটি অ্যারে থেকে মুছে ফেলা হয়েছে।

৫. Observable Array তে আইটেম আপডেট করা:

আপনি observableArray.replace() মেথড ব্যবহার করে কোন আইটেম পরিবর্তন করতে পারেন:

fruits.replace("Orange", "Pineapple");
console.log(fruits());  // Output: ["Apple", "Pineapple", "Grapes"]

এখানে, replace() মেথডের মাধ্যমে "Orange" আইটেমটি পরিবর্তন করে "Pineapple" করা হয়েছে।

৬. Observable Array এর সাথে অন্যান্য Array মেথড:

KnockoutJS observableArray তে অন্যান্য সাধারণ অ্যারে মেথড যেমন pop(), shift(), unshift() ইত্যাদি সমর্থন করে।

fruits.pop();  // Removes "Grapes"
console.log(fruits());  // Output: ["Apple", "Pineapple"]

HTML এর মধ্যে Observable Array ব্যবহার:

KnockoutJS এর observableArray এবং data-bind ব্যবহার করে আপনি সহজেই UI তে ডেটা প্রদর্শন করতে পারেন।

উদাহরণ: HTML এ Observable Array প্রদর্শন:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>KnockoutJS Observable Array</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>

    <h2>Fruits List</h2>
    <ul data-bind="foreach: fruits">
        <li data-bind="text: $data"></li>
    </ul>

    <input type="text" id="newFruit" />
    <button data-bind="click: addFruit">Add Fruit</button>

    <script>
        function AppViewModel() {
            this.fruits = ko.observableArray(["Apple", "Banana", "Orange"]);

            this.addFruit = () => {
                var newFruit = document.getElementById("newFruit").value;
                if (newFruit) {
                    this.fruits.push(newFruit);  // Add new fruit to the array
                    document.getElementById("newFruit").value = '';  // Clear the input field
                }
            };
        }

        ko.applyBindings(new AppViewModel());
    </script>

</body>
</html>

এখানে:

  1. data-bind="foreach: fruits" এর মাধ্যমে fruits observable array-এর সমস্ত আইটেম একটি <ul> এলিমেন্টে লুপ করে প্রদর্শিত হচ্ছে।
  2. addFruit মেথডের মাধ্যমে ইনপুট ফিল্ড থেকে নতুন একটি ফল অ্যারে তে যোগ করা হচ্ছে।
  3. KnockoutJS এর মাধ্যমে UI তে ডেটা পরিবর্তন হলে তা স্বয়ংক্রিয়ভাবে আপডেট হবে।

Observable Array এর বৈশিষ্ট্য এবং সুবিধা:

  1. Dynamic Updates: Observable Array তে আইটেম যোগ, মুছা বা পরিবর্তিত হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়।
  2. Efficient Memory Usage: শুধুমাত্র প্রয়োজনীয় ডেটা লোড করে মেমরি ব্যবহারের পরিমাণ কমানো যায়।
  3. Reactivity: Observable Arrays ডেটার উপর নির্ভরশীল উপাদানগুলিকে স্বয়ংক্রিয়ভাবে আপডেট করে, যা ডাইনামিক ইউআই তৈরি করতে সহায়ক।
  4. Looping: সহজে অ্যারে ডেটা লুপ করে UI তে উপস্থাপন করা যায়।

Observable Array হল KnockoutJS এর একটি অত্যন্ত শক্তিশালী বৈশিষ্ট্য, যা ডেটাবেস, ফর্ম বা লিস্ট হ্যান্ডলিং এর জন্য অত্যন্ত কার্যকর। এটি two-way data binding এর মাধ্যমে ডেটা এবং UI এর মধ্যে সম্পর্ক স্থাপন করে, এবং ডেটার কোনো পরিবর্তন হলে তা UI তে স্বয়ংক্রিয়ভাবে আপডেট হয়। KnockoutJS এর observableArray ব্যবহার করে আপনি সহজেই ডেটার অ্যাড, রিমুভ, বা আপডেট ম্যানেজ করতে পারেন এবং তা UI তে বাস্তব সময়ের পরিবর্তন দেখাতে পারেন।

Content added By

Array Manipulation Methods (push, pop, remove, etc.)

220

KnockoutJS তে Array Manipulation এর মাধ্যমে আপনি ডেটা ভ্যালু পরিবর্তন, অ্যারে থেকে আইটেম যোগ করা বা মুছে ফেলা, এবং অন্যান্য সাধারণ অপারেশন করতে পারবেন। KnockoutJS তে observable arrays ব্যবহৃত হয় যা UI এর সাথে সিঙ্ক্রোনাইজ হয়ে থাকে, এবং আপনি যদি এই অ্যারেগুলোর মধ্যে কোনো পরিবর্তন করেন, তবে সেই পরিবর্তন UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হবে।

এখানে KnockoutJS তে Array Manipulation মেথডস (যেমন push(), pop(), remove(), ইত্যাদি) নিয়ে আলোচনা করা হয়েছে।

1. Observable Array:

KnockoutJS তে observable array একটি বিশেষ ধরনের observable যা অ্যারের মধ্যে ডেটার পরিবর্তন ট্র্যাক করতে সক্ষম। এটি স্বয়ংক্রিয়ভাবে UI কে আপডেট করে যখন অ্যারের মধ্যে নতুন আইটেম যোগ করা হয় অথবা কোনো আইটেম মুছে ফেলা হয়।

Observable Array তৈরি করা:

var myArray = ko.observableArray([1, 2, 3]);

এখানে, myArray একটি observable array যা {1, 2, 3} দিয়ে ইনিশিয়ালাইজ করা হয়েছে। এই অ্যারে তে ডেটা পরিবর্তন করলে UI তে স্বয়ংক্রিয়ভাবে পরিবর্তন দেখা যাবে।


2. Array Manipulation Methods in KnockoutJS

KnockoutJS তে আপনি অ্যারের বিভিন্ন অপারেশন করতে পারেন যেমন আইটেম যোগ করা, মুছে ফেলা, বা আইটেম আপডেট করা। এখানে কিছু সাধারণ মেথডের ব্যবহার দেখানো হয়েছে:

2.1. push() Method (আইটেম যোগ করা)

push() মেথডটি একটি নতুন আইটেম যোগ করার জন্য ব্যবহৃত হয়।

Example:

var myArray = ko.observableArray([1, 2, 3]);

// Adding a new item to the array
myArray.push(4);

console.log(myArray());  // Output: [1, 2, 3, 4]

এখানে:

  • push() ব্যবহার করে নতুন 4 আইটেমটি অ্যারেতে যোগ করা হয়েছে।

2.2. pop() Method (আইটেম অপসারণ)

pop() মেথডটি অ্যারের শেষের আইটেমটি মুছে ফেলে এবং সেই আইটেমটি রিটার্ন করে।

Example:

var myArray = ko.observableArray([1, 2, 3]);

// Removing the last item from the array
var removedItem = myArray.pop();

console.log(myArray());  // Output: [1, 2]
console.log(removedItem); // Output: 3

এখানে:

  • pop() ব্যবহার করে অ্যারের শেষের 3 আইটেমটি মুছে ফেলা হয়েছে এবং মুছে ফেলা আইটেমটি removedItem ভেরিয়েবলে সেভ করা হয়েছে।

2.3. shift() Method (প্রথম আইটেম অপসারণ)

shift() মেথডটি অ্যারের প্রথম আইটেমটি মুছে ফেলে এবং সেই আইটেমটি রিটার্ন করে।

Example:

var myArray = ko.observableArray([1, 2, 3]);

// Removing the first item from the array
var removedItem = myArray.shift();

console.log(myArray());  // Output: [2, 3]
console.log(removedItem); // Output: 1

এখানে:

  • shift() ব্যবহার করে অ্যারের প্রথম 1 আইটেমটি মুছে ফেলা হয়েছে এবং মুছে ফেলা আইটেমটি removedItem ভেরিয়েবলে সেভ করা হয়েছে।

2.4. unshift() Method (প্রথমে আইটেম যোগ করা)

unshift() মেথডটি অ্যারের প্রথমে একটি নতুন আইটেম যোগ করে।

Example:

var myArray = ko.observableArray([2, 3]);

// Adding a new item at the beginning of the array
myArray.unshift(1);

console.log(myArray());  // Output: [1, 2, 3]

এখানে:

  • unshift() ব্যবহার করে অ্যারের প্রথমে 1 আইটেমটি যোগ করা হয়েছে।

2.5. remove() Method (আইটেম মুছে ফেলা)

remove() মেথডটি একটি নির্দিষ্ট আইটেম বা আইটেমগুলিকে অ্যারে থেকে মুছে ফেলে।

Example:

var myArray = ko.observableArray([1, 2, 3, 4]);

// Removing a specific item from the array
myArray.remove(3);

console.log(myArray());  // Output: [1, 2, 4]

এখানে:

  • remove() মেথডটি 3 আইটেমটি অ্যারে থেকে মুছে ফেলেছে।

2.6. removeAll() Method (সব আইটেম মুছে ফেলা)

removeAll() মেথডটি অ্যারে থেকে সব আইটেম মুছে ফেলে।

Example:

var myArray = ko.observableArray([1, 2, 3, 4]);

// Removing all items from the array
myArray.removeAll();

console.log(myArray());  // Output: []

এখানে:

  • removeAll() মেথডটি অ্যারে থেকে সব আইটেম মুছে ফেলেছে এবং অ্যারে এখন খালি।

2.7. replace() Method (আইটেম প্রতিস্থাপন)

replace() মেথডটি একটি নির্দিষ্ট আইটেম প্রতিস্থাপন করতে ব্যবহার করা হয়।

Example:

var myArray = ko.observableArray([1, 2, 3]);

// Replacing item 2 with 4
myArray.replace(2, 4);

console.log(myArray());  // Output: [1, 4, 3]

এখানে:

  • replace() মেথডটি 2 আইটেমটি 4 দিয়ে প্রতিস্থাপন করেছে।

2.8. sort() Method (আইটেম সাজানো)

sort() মেথডটি অ্যারের আইটেমগুলি সাজানোর জন্য ব্যবহৃত হয়।

Example:

var myArray = ko.observableArray([4, 1, 3, 2]);

// Sorting the array in ascending order
myArray.sort(function(a, b) {
    return a - b;
});

console.log(myArray());  // Output: [1, 2, 3, 4]

এখানে:

  • sort() মেথডটি myArray এর আইটেমগুলোকে ascending order-এ সাজিয়ে দিয়েছে।

সারাংশ:

  • KnockoutJS তে observable arrays ব্যবহার করে আপনি অ্যারের মধ্যে আইটেম যোগ, মুছে ফেলা, আপডেট করা, এবং সাজানো সহ বিভিন্ন অপারেশন করতে পারেন।
  • push(), pop(), shift(), unshift(), remove(), removeAll(), replace(), এবং sort() এর মতো মেথড ব্যবহার করে আপনি অ্যারে ম্যানিপুলেশন করতে পারবেন।
  • Observables এর মাধ্যমে two-way data binding এর সুবিধা পাওয়া যায়, যেখানে অ্যারের মধ্যে পরিবর্তন হলে তা UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়।

KnockoutJS এর observable arrays আপনাকে ডাইনামিক এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে সহায়তা করে, যেখানে ডেটার পরিবর্তন UI তে দ্রুত এবং স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়।

Content added By

Observable Arrays এর মাধ্যমে ডায়নামিক তালিকা তৈরি করা

255

KnockoutJS তে Observable Arrays ব্যবহার করে আপনি ডায়নামিক তালিকা তৈরি করতে পারেন যা UI তে স্বয়ংক্রিয়ভাবে আপডেট হয় যখন ডেটা পরিবর্তিত হয়। এটি two-way data binding-এর সুবিধা দেয়, যেখানে আপনি observable arrays এর মধ্যে আইটেম যুক্ত বা মুছে ফেলার মাধ্যমে UI তে তালিকা স্বয়ংক্রিয়ভাবে আপডেট করতে পারেন।

Observable Arrays: কী এবং কেন ব্যবহার করা হয়?

Observable Arrays হল KnockoutJS এর একটি বিশেষ ধরনের observable, যা একটি অ্যারে ধারণ করে এবং সেই অ্যারের মধ্যে কোনো পরিবর্তন হলে তা UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়। এটি ডায়নামিক তালিকা তৈরি এবং পরিচালনা করার জন্য খুবই কার্যকরী।

Observable Array তৈরি করা:

KnockoutJS তে observable array তৈরি করতে, আপনি ko.observableArray() ব্যবহার করেন। এই ফাংশনটি একটি অ্যারে তৈরি করে যা পরিবর্তন হলে UI-তে তা আপডেট হয়ে যায়।

Example (Observable Array Creation):

// Creating an observable array
var items = ko.observableArray(['Item 1', 'Item 2', 'Item 3']);

এখানে:

  • ko.observableArray() একটি observable array তৈরি করে যা প্রথমে `['Item 1', 'Item 2', 'Item 3'] অ্যারে ধারণ করে।

Observable Array ব্যবহার করে Dynamic List তৈরি করা:

KnockoutJS তে আপনি observable arrays ব্যবহার করে ডায়নামিক তালিকা তৈরি করতে পারেন এবং সেগুলি HTML টেবিল, লিস্ট অথবা অন্য কোনো উপাদানে বাইন্ড করতে পারেন।

HTML Example:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>KnockoutJS Observable Array Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
</head>
<body>
    <h2>Dynamic List Using Observable Array</h2>

    <!-- Input for adding new item -->
    <input type="text" data-bind="value: newItem" placeholder="Add new item">
    <button data-bind="click: addItem">Add Item</button>

    <!-- Displaying the list -->
    <ul data-bind="foreach: items">
        <li>
            <span data-bind="text: $data"></span>
            <button data-bind="click: $parent.removeItem">Remove</button>
        </li>
    </ul>

    <script>
        // ViewModel
        function ViewModel() {
            var self = this;

            // Observable array for storing list items
            self.items = ko.observableArray(['Item 1', 'Item 2', 'Item 3']);

            // Observable for new item input
            self.newItem = ko.observable('');

            // Add item function
            self.addItem = function() {
                if (self.newItem()) {
                    self.items.push(self.newItem());
                    self.newItem('');  // Clear the input field
                }
            };

            // Remove item function
            self.removeItem = function(item) {
                self.items.remove(item);
            };
        }

        // Apply bindings
        ko.applyBindings(new ViewModel());
    </script>
</body>
</html>

Explaining the Example:

  1. Creating an Observable Array:
    • self.items = ko.observableArray(['Item 1', 'Item 2', 'Item 3']);
      • এখানে একটি observable array তৈরি করা হয়েছে যা প্রাথমিকভাবে তিনটি আইটেম ধারণ করছে।
  2. Adding Items:
    • self.addItem = function(): নতুন আইটেম যোগ করার জন্য একটি ফাংশন তৈরি করা হয়েছে। self.items.push(self.newItem()) ব্যবহার করে নতুন আইটেমকে observable array তে যোগ করা হচ্ছে।
    • self.newItem(''): নতুন আইটেম যোগ করার পর ইনপুট ফিল্ডটি খালি করা হয়।
  3. Removing Items:
    • self.removeItem = function(item): এখানে একটি ফাংশন তৈরি করা হয়েছে যা একটি আইটেম মুছে ফেলার জন্য observable array থেকে remove() ফাংশন ব্যবহার করে আইটেমটি সরিয়ে নেয়।
  4. Binding the List to HTML:
    • <ul data-bind="foreach: items">: foreach বাইন্ডিং ব্যবহার করে items observable array তে থাকা সব আইটেমের জন্য একটি <li> তৈরি করা হচ্ছে।
    • <span data-bind="text: $data"></span>: প্রতিটি আইটেমের নাম text বাইন্ডিং ব্যবহার করে UI তে দেখানো হচ্ছে।
    • <button data-bind="click: $parent.removeItem">Remove</button>: প্রতিটি আইটেমের পাশে একটি Remove বাটন যোগ করা হয়েছে যা ক্লিক করলে ঐ আইটেমটি observable array থেকে সরিয়ে ফেলবে।

Key Functions of Observable Arrays:

  1. push(): একটি নতুন আইটেম observable array তে যোগ করতে ব্যবহৃত হয়।

    items.push('New Item');
    
  2. pop(): শেষের আইটেমটি observable array থেকে সরাতে ব্যবহৃত হয়।

    items.pop();
    
  3. shift(): প্রথম আইটেমটি observable array থেকে সরাতে ব্যবহৃত হয়।

    items.shift();
    
  4. unshift(): নতুন আইটেম শুরুতে যোগ করতে ব্যবহৃত হয়।

    items.unshift('New Item at Start');
    
  5. remove(): নির্দিষ্ট আইটেম বা শর্ত অনুসারে observable array থেকে আইটেম মুছে ফেলা হয়।

    items.remove('Item 1');
    
  6. replace(): একটি আইটেমকে অন্য আইটেম দ্বারা প্রতিস্থাপন করতে ব্যবহৃত হয়।

    items.replace('Old Item', 'New Item');
    
  7. indexOf(): observable array তে কোনো আইটেমের ইনডেক্স খুঁজে পেতে ব্যবহৃত হয়।

    var index = items.indexOf('Item 1');
    

Advantages of Using Observable Arrays in KnockoutJS:

  1. Automatic UI Update: Observable arrays ব্যবহার করলে, যখনই অ্যারে তে কোন পরিবর্তন হয় (যেমন, আইটেম যোগ করা, মুছে ফেলা বা পরিবর্তন), UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়। এটি ডেভেলপারদের জন্য UI আপডেট করার জন্য অনেক সময় এবং পরিশ্রম বাঁচায়।
  2. Real-Time Interactivity: ইউজারের ইনপুট অনুসারে তালিকা স্বয়ংক্রিয়ভাবে পরিবর্তিত হতে থাকে, যার ফলে real-time interactivity নিশ্চিত হয়।
  3. Simplified DOM Manipulation: KnockoutJS observable arrays এর মাধ্যমে ডায়নামিক DOM ম্যানিপুলেশন সহজ করে তোলে, যেখানে অ্যারের মধ্যে কোনো পরিবর্তন UI তে সরাসরি দেখা যায়।
  4. Declarative Syntax: KnockoutJS তে ডায়নামিক তালিকা তৈরির সময় declarative binding ব্যবহার করা হয়, যার মাধ্যমে কোড সহজ এবং পরিষ্কার থাকে।

KnockoutJS তে observable arrays ব্যবহার করে আপনি খুব সহজে ডায়নামিক তালিকা তৈরি করতে পারেন যা UI তে স্বয়ংক্রিয়ভাবে আপডেট হয়। এটি two-way data binding, computed observables, এবং dependency tracking এর সুবিধা দিয়ে কোডকে আরো সহজ, দ্রুত এবং ইন্টারঅ্যাকটিভ করে তোলে। Observable arrays ব্যবহার করে, আপনি ব্যবহারকারী ইন্টারফেসকে আরও ডাইনামিক এবং ইন্টারঅ্যাকটিভ করতে পারেন।

Content added By

Array Filter এবং Mapping

263

KnockoutJS তে Array Filter এবং Mapping দুটি অত্যন্ত শক্তিশালী ফিচার, যা ডেটা অ্যারে এবং UI এর মধ্যে ডেটার পরিবর্তন এবং প্রদর্শন করতে সাহায্য করে। Array Filter ব্যবহার করে আপনি একটি অ্যারে থেকে নির্দিষ্ট শর্তের ভিত্তিতে আইটেমগুলো ফিল্টার করতে পারেন এবং Mapping ব্যবহার করে আপনি একটি অ্যারেকে নির্দিষ্ট ফর্ম্যাটে রূপান্তর করতে পারেন।

এখানে KnockoutJS তে Array Filter এবং Mapping ব্যবহারের বিস্তারিত আলোচনা করা হয়েছে।


1. Array Filter in KnockoutJS

Array Filter ফিচারটি KnockoutJS এর ko.utils.arrayFilter() ফাংশন ব্যবহার করে কাজ করে। এটি একটি অ্যারে থেকে নির্দিষ্ট শর্তের উপর ভিত্তি করে আইটেমগুলোকে ফিল্টার করে।

Array Filter ব্যবহার করার ধারণা

KnockoutJS তে ko.utils.arrayFilter() একটি utility ফাংশন যা একটি অ্যারে এবং একটি ফিল্টার ফাংশন নেয় এবং সেই শর্ত মেনে ফিল্টার করা একটি নতুন অ্যারে রিটার্ন করে।

Syntax:

ko.utils.arrayFilter(array, function(item) {
    return condition; // Return true or false based on condition
});

Example:

ধরা যাক, আমাদের একটি অ্যারে আছে যেখানে কিছু ফল রয়েছে, এবং আমরা শুধুমাত্র যেসব ফলের নামের দৈর্ঘ্য ৫ অক্ষরের বেশি, তা ফিল্টার করতে চাই।

// Observable Array
var fruits = ko.observableArray(['Apple', 'Banana', 'Orange', 'Grapes']);

// Filtered Fruits - Length > 5 characters
var filteredFruits = ko.computed(function() {
    return ko.utils.arrayFilter(fruits(), function(fruit) {
        return fruit.length > 5;  // Only fruits with more than 5 characters
    });
});

// Log the filtered fruits
console.log(filteredFruits());  // ["Banana", "Orange"]

এখানে:

  • ko.utils.arrayFilter() ফাংশনটি fruits() অ্যারের মধ্যে সেই ফলগুলোকে নির্বাচন করে, যেগুলোর নামের দৈর্ঘ্য ৫ অক্ষরের বেশি।

2. Mapping in KnockoutJS

Mapping ফিচারটি KnockoutJS তে ডেটা অ্যারের উপর রূপান্তর বা ম্যাপিং করতে ব্যবহৃত হয়। যখন আপনি একটি অ্যারের আইটেমগুলিকে নতুন কাঠামোতে রূপান্তর করতে চান, তখন ko.utils.arrayMap() ব্যবহার করা হয়।

Array Mapping ব্যবহার করার ধারণা

ko.utils.arrayMap() ফাংশনটি একটি অ্যারে এবং একটি ফাংশন নেয় এবং প্রত্যেকটি আইটেমের উপর ফাংশন প্রয়োগ করে একটি নতুন অ্যারে তৈরি করে।

Syntax:

ko.utils.arrayMap(array, function(item) {
    return mappedItem; // Return the mapped item
});

Example:

ধরা যাক, আমাদের একটি অ্যারে আছে যেখানে ফলের নাম এবং দাম রয়েছে এবং আমরা দাম অনুযায়ী একটি নতুন অ্যারে তৈরি করতে চাই।

// Observable Array with fruits and their prices
var fruits = ko.observableArray([
    { name: 'Apple', price: 2 },
    { name: 'Banana', price: 1.5 },
    { name: 'Orange', price: 3 }
]);

// Map fruits to a new structure where only the name and price are shown
var mappedFruits = ko.computed(function() {
    return ko.utils.arrayMap(fruits(), function(fruit) {
        return {
            fruitName: fruit.name,  // Mapping fruit name
            fruitPrice: '$' + fruit.price.toFixed(2)  // Mapping price with $ sign
        };
    });
});

// Log the mapped fruits
console.log(mappedFruits());

এখানে:

  • ko.utils.arrayMap() ফাংশনটি fruits() অ্যারের প্রতিটি আইটেমের উপর ফাংশন প্রয়োগ করে একটি নতুন অ্যারে তৈরি করেছে, যেখানে ফলের নাম এবং দাম নতুন কাঠামোতে fruitName এবং fruitPrice হিসেবে সংরক্ষিত হয়েছে।

3. Filter and Mapping Combined in KnockoutJS

কখনও কখনও, আপনাকে array filter এবং mapping একত্রে ব্যবহার করতে হতে পারে, যেমন যখন আপনি অ্যারে থেকে কিছু আইটেম ফিল্টার করতে চান এবং তারপরে ফিল্টার করা আইটেমগুলোর উপর রূপান্তর প্রয়োগ করতে চান।

Example: Filter and Map Together

var fruits = ko.observableArray([
    { name: 'Apple', price: 2 },
    { name: 'Banana', price: 1.5 },
    { name: 'Orange', price: 3 },
    { name: 'Pineapple', price: 4 }
]);

// First filter fruits where price is greater than 2 and then map them
var filteredAndMappedFruits = ko.computed(function() {
    return ko.utils.arrayMap(
        ko.utils.arrayFilter(fruits(), function(fruit) {
            return fruit.price > 2;  // Filtering fruits with price greater than 2
        }),
        function(fruit) {
            return {
                fruitName: fruit.name,
                fruitPrice: '$' + fruit.price.toFixed(2)
            };
        }
    );
});

console.log(filteredAndMappedFruits());  
// Output: [{ fruitName: "Orange", fruitPrice: "$3.00" }, { fruitName: "Pineapple", fruitPrice: "$4.00" }]

এখানে:

  • ko.utils.arrayFilter() ব্যবহার করে ফলগুলো ফিল্টার করা হয়েছে, যেখানে দাম ২ এর বেশি।
  • তারপর, ko.utils.arrayMap() ব্যবহার করে শুধুমাত্র প্রয়োজনীয় তথ্য (ফল নাম এবং দাম) ম্যাপ করা হয়েছে।

4. Practical Example: Shopping Cart

ধরা যাক, আপনার একটি শপিং কার্ট অ্যাপে গ্রাহকের নির্বাচিত পণ্য এবং তাদের দাম রয়েছে। আপনি একটি ফিল্টারিং এবং ম্যাপিং ফিচার তৈরি করতে চান।

var cartItems = ko.observableArray([
    { name: 'Laptop', price: 1000 },
    { name: 'Phone', price: 600 },
    { name: 'Headphones', price: 100 }
]);

// Filter items with price greater than 200 and map the results
var expensiveItems = ko.computed(function() {
    return ko.utils.arrayMap(
        ko.utils.arrayFilter(cartItems(), function(item) {
            return item.price > 200;
        }),
        function(item) {
            return {
                itemName: item.name,
                itemPrice: '$' + item.price.toFixed(2)
            };
        }
    );
});

console.log(expensiveItems()); 
// Output: [{ itemName: "Laptop", itemPrice: "$1000.00" }, { itemName: "Phone", itemPrice: "$600.00" }]

এখানে:

  • ko.utils.arrayFilter() ফাংশনটি শুধু দাম ২০০ এর বেশি এমন আইটেমগুলোকে ফিল্টার করে।
  • ko.utils.arrayMap() ফাংশনটি ফলের নাম এবং দামকে একটি নতুন কাঠামোতে রূপান্তরিত করে।

সারাংশ:

  • ko.utils.arrayFilter() এবং ko.utils.arrayMap() KnockoutJS এর শক্তিশালী ফিচার যা ডেটার অ্যারেগুলোর মধ্যে ফিল্টার এবং ম্যাপিং করতে সাহায্য করে।
  • arrayFilter() ব্যবহার করে আপনি একটি অ্যারের থেকে নির্দিষ্ট শর্ত অনুযায়ী আইটেমগুলো ফিল্টার করতে পারেন।
  • arrayMap() ব্যবহার করে আপনি একটি অ্যারে থেকে নতুন কাঠামো বা ফর্ম্যাটে ডেটা তৈরি করতে পারেন।
  • আপনি filtering এবং mapping একত্রে ব্যবহার করে জটিল ডেটা ম্যানিপুলেশন খুব সহজে করতে পারেন, যেমন শপিং কার্টে দাম অনুযায়ী আইটেম ফিল্টার করা এবং তাদের নতুন ফরম্যাটে রূপান্তর করা।

এই ফিচারগুলি KnockoutJS এর ডাইনামিক এবং ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরিতে খুবই কার্যকরী এবং সাহায্যকারী।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...